﻿using AppGisena.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Ext.Net;

using AppGISENA.ObjetosNegocio;
using AppGISENA.UIServicios;

namespace AppGisena.Presentacion.Up
{
    public partial class RegProductoUp : System.Web.UI.Page
    {
        private UnidadProductivaServicios myservicios = new UnidadProductivaServicios();
        protected void Page_Load(object sender, EventArgs e)
        {
            JsonReader reader = new JsonReader
            {
                Root = "plants",
                TotalProperty = "total"
            };

            // Create Proxy
            AjaxProxy proxy = new AjaxProxy
            {
                Url = "Plants.ashx",
                Reader = { reader },
                ActionMethods =
                {
                    Read = HttpMethod.POST
                }
            };

            Model model = new Model()
            {
                Fields = {
                new ModelField("Id_Prod"),
                new ModelField("Nomb_Prod"),
                new ModelField("Descrip"),
                new ModelField("Id_Cate", ModelFieldType.Int),
                new ModelField("Id_Tp_Prod", ModelFieldType.Int)
            }
            };

            // Add Proxy and Reader to Store
            Store store = new Store
            {
                //   Proxy = { proxy },
                Model = { model },
                AutoLoad = false
            };

            // Create ComboBox
            ComboBox combobox = new ComboBox
            {
                DisplayField = "Nomb_Prod",
                ValueField = "Id_Prod",
                TypeAhead = false,
                Width = 570,
                PageSize = 10,
                HideBaseTrigger = true,
                ListConfig = new BoundList
                {
                    LoadingText = "Buscando..."
                },
                MinChars = 0,
                TriggerAction = Ext.Net.TriggerAction.Query,
                Store = { store }
            };

            combobox.ListConfig = new BoundList
            {
                ItemTpl = new XTemplate
                {
                    Html = @"
                  <div class=""search-item"">
                     <h3><span>{Id_Prod}</span>{Nomb_Prod}</h3>
                     {Descrip}
                  </div>"
                }
            };



        }

        [DirectMethod]
        public void ActivarPanelProduc()
        {
            try
            {

                listarGridProductoOfertado(int.Parse(Txt_Cod_Up.Text));
                // X.Msg.Notify("GISENA", "grid cargado").Show();
            }

            catch { }
        }


        [DirectMethod]
        public void BorrarProducto(int codproductoofertado)
        {
            try
            {
                //myservicios.DeleteProductoOfertado(codproductoofertado);
                X.Msg.Notify("GISENA", "borrado" + codproductoofertado).Show();
                listarGridProductoOfertado(int.Parse(Txt_Cod_Up.Text));
            }

            catch (Exception ex)
            {
                X.Msg.Alert("GISENA", "Revise conexion" + ex).Show();

                //falla en la conectividad, o sistema no disponible
            }
        }

        protected void Btn_BuscarUP_Click(object sender, DirectEventArgs e)
        {

            if (Txt_Cod_Up.Text != null)
            {
                try
                {
                    //buscar si la UP esta registrada en GISENA



                    var sofia = myservicios.getUPSofiaById((int.Parse)(Txt_Cod_Up.Text));

                    if (sofia == null)
                    {
                        X.Msg.Notify("GISENA", "No se encuentra la Unidad Productiva").Show();
                     

                    }
                    else
                    {
                        Txt_Cod_Cent_Form2.Text = sofia.Cod_Cent_Form.ToString();
                        Txt_NFicha_UP2.Text = sofia.NFicha_UP;
                        Txt_Nomb_UP2.Text = sofia.Nomb_UP;
                        

                        listarGridProductoOfertado(int.Parse(Txt_Cod_Up.Text));

                    }




                }
                catch (Exception ex)
                {
                    X.Msg.Alert("GISENA", "Revise conexion" + ex).Show();

                    //falla en la conectividad, o sistema no disponible
                }
            }
            else
            {
                X.Msg.Alert("GISENA", "Digite el codigo de la Unidad Productiva").Show();

            }
        }
        /// <summary>
        /// buscar producto por codigo de producto
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>


        protected void Btn_BtnBusqCodigo(object sender, DirectEventArgs e)
        {


            try
            {


           
            
            var producto = myservicios.GetProductos();


            var productob = (from mysofia in producto
                             where mysofia.Id_Prod_Final == (int.Parse)(cmbproduct.Text)
                             select mysofia).ToList().SingleOrDefault();

            if (productob == null)
            {
                X.Msg.Alert("GISENA", "No se encuentra el producto").Show();


            }
            else
            {
                X.Msg.Alert("GISENA", "Producto : " + productob.Nomb_Prod + " Por favor Guardar").Show();

            }

             }
            catch (Exception ex)
            {
                X.Msg.Alert("GISENA", "Revise conexion" + ex).Show();

                //falla en la conectividad, o sistema no disponible
            }

        }


        private void listarGridProductoOfertado(long codup)
        {
            if (Txt_Cod_Up.Text != null)
            {
                try
                {

                    StrGrid_Prod_Ofer.DataSource = myservicios.listarGridProductoOfertado(codup);
                    StrGrid_Prod_Ofer.DataBind();



                }
                catch (Exception e)
                {
                    X.Msg.Alert("GISENA",e.Message.ToString());
                  //  e.Message;
                   // response.Message = e.Message;
                }
            }
            else
            {

                X.Msg.Alert("GISENA", "Digite un codigo de UP").Show();

            }


        }


        /// <summary>
        /// Evento de boton Registrar producto 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Btn_Registrar_Prod(object sender, DirectEventArgs e)
        {
            try
            {

                if (cmbproduct.Text != null || cmbproduct.SelectedItem.Value != null)
                {

                    //agregar un produto en productos ofertados

                    productosOfertadosBO myproducto = new productosOfertadosBO
                    {
                        Cod_UP = int.Parse(Txt_Cod_Up.Text),
                        Id_Prod_Final = int.Parse(cmbproduct.SelectedItem.Value),
                        Principal =bool.Parse(Slb_principal.Text)



                    };
                    myservicios.CreateProductoOfertado(myproducto);
                    X.Msg.Notify("GISENA", "Guardando Producto de la Unidad Productiva").Show();
                    //actualizar el grid

                    //consultar productos de la UP



                }
                else
                {
                    X.Msg.Alert("GISENA", "Seleccione un producto o digite el codigo").Show();

                }

                //LLENAR LOS DEMAS CONTROLES CON LA INFORMACION
                //BDGISENAEntities2 GisenaDb = new BDGISENAEntities2();

            }
            catch (Exception ex)
            {
                X.Msg.Alert("GISENA", "Revise conexion" + ex).Show();

                //falla en la conectividad, o sistema no disponible
            }
            listarGridProductoOfertado(int.Parse(Txt_Cod_Up.Text));

        }
    }
}